#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <set>
#include <bitset>
#include <utility>
using namespace std;

#define mm(a, n) memset(a, n, sizeof a)
#define mk(a, b) make_pair(a, b)

const double eps = 1e-6;
const int INF = 0x3f3f3f3f;

typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef pair<LL, LL> PLL;
typedef pair<int, LL> PIL;

inline void quickread() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
}


string s;

inline void solution() {
    cin >> s;
    // 标记 正负
    bool neg = s[0] == '+' ? false : true;
    // 处理后面 幂次
    auto t = s.find('E');
    string num = s.substr(1, t - 1);
    string e = s.substr(t + 1);
    // 标记 幂次 正负
    bool neg_e = e[0] == '+' ? false : true;
    e = e.substr(1);
    int exp = stoi(e);
    // 如果幂次为0 不需要处理
    if (exp == 0) {
        if (neg)
            cout << "-" << num << endl;
        else 
            cout << num << endl;
        return ;
    }

    string res = "";
    int k = num.find('.');
    string s = num.substr(0, k) + num.substr(k + 1);
    // 处理幂次为负的数据 这里题目已知 小数点在第二位
    if (neg_e) {
        res += "0.";
        for (int i = 1; i < exp; i ++ )
            res += '0';
        res = res + num.substr(0, k) + num.substr(k + 1);
    } else {
        int t = num.size() - 2;
        if (t <= exp) {
            res += s;
            for (int i = 1; i <= exp - t; i ++ ) 
                res += '0';
        } else {
            res = s.substr(0, exp + 1) + "." + s.substr(exp + 1);
        }
    }
    if (neg) {
        res = "-" + res;
    }
    cout << res << endl;
}

int main() {
    freopen("input.txt", "r", stdin);
    quickread();
    solution();
    return 0;
}